﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Aliphant.Mvvm.XEvent.UI;

namespace Aliphant.UI.AIChat.Models
{
    public enum BubbleType
    {
        User,
        Answer,
        Thinking,
    }


    public class ChatBubble : BindableBase
    {
        public ChatBubble(string message, BubbleType bubbleType)
        {
            this._message = message;
        }

        public ChatBubble(BubbleType bubbleType)
        {
            _bubbleType = BubbleType;
        }

        private readonly BubbleType _bubbleType;
        public BubbleType BubbleType => _bubbleType;


        private string _message = string.Empty;
        public string Message { get => _message; set => SetProperty(ref _message, value); }
    }

    public class UserBubble : ChatBubble
    {
        public UserBubble() : base(BubbleType.User) { }

        public UserBubble(string message) : base(message, BubbleType.User) { }
    }

    public class AnswerBubble : ChatBubble
    {
        public AnswerBubble() : base(BubbleType.Answer) { }

        public AnswerBubble(string message) : base(message, BubbleType.Answer) { }
    }

    public class ThinkingBubble : ChatBubble
    {
        public ThinkingBubble() : base(BubbleType.Thinking) { }

        public ThinkingBubble(string message) : base(message, BubbleType.Thinking) { }
    }
}
